package com.winsdom.service.customer;

import com.winsdom.entity.customer.CustomerIndividualBasicInfoRequest;
import com.winsdom.mapper.customer.CustomerIndividualBasicInfoMapper;

/**
 * 客户基本信息服务接口，定义客户基础信息的查询操作。
 * <p>
 * 该接口负责提供客户基本信息的查询功能，包括客户类型、名称、联系方式等基础数据，
 * 以及关联的联系人信息和楼盘分类信息。
 */
public interface CustomerIndividualBasicInfoService {

    /**
     * 根据客户ID查询客户基本信息（包含联系人及关联楼盘信息）。
     * <p>
     * 该方法通过客户ID检索客户主表及关联表数据，返回封装了客户基础信息、
     * 联系人信息（如姓名、电话）及其关联的楼盘分类名称的实体对象。
     * <p>
     * 业务规则：
     * - 若客户不存在或无相关数据，返回的{@link CustomerIndividualBasicInfoRequest}对象中各字段为默认值，
     *   联系人列表为空列表。
     * - 数据来源：通过{@link CustomerIndividualBasicInfoMapper}
     *   执行多表联查（客户表、联系人表、楼盘分类关联表）获取数据。
     *
     * @param customerId 客户ID（数据库自增主键）
     * @return {@link CustomerIndividualBasicInfoRequest}实体对象，包含：
     *         <ul>
     *             <li>客户基本信息（客户类型、名称、手机号等）</li>
     *             <li>联系人列表（{@link CustomerIndividualBasicInfoRequest.ContactInfo}）</li>
     *             <li>每个联系人关联的楼盘分类名称列表</li>
     *         </ul>
     */
    CustomerIndividualBasicInfoRequest getCustomerBasicInfo(Long customerId);
}